With almost any computer program, it is necessary to manipulate information stored on a persistent media from time to time. Usually the information is stored in some type of registry, which could be a typical file for a particular operating system. Other than a typical flat file, a registry could be a proprietary storage mechanism, such as the Windows™ registry on the Microsoft Windows™ operating system, which may be manipulated using particular application programming interfaces.
A registry, in this context, stores a set of information that the computer program may wish to read, add to, delete or otherwise manipulate. The information is typically configuration information for the computer hardware, the operating system, the computer program or any other computer software or services. For example, on Unix™ based operating system the /etc/services registry stores configuration information for the services and protocols assigned to particular ports, such as telnet, ftp, or other services.
In order to manipulate a particular registry, the developer of a computer program must provide the computer program with the functionality necessary to perform the registry level functions needed to access and manipulate the particular registry. Because even amongst file-based registries, the registries can vary as to type (i.e. binary or text-based) and can further vary as to specific format, the computer program must contain code for manipulating each individual registry. As a result, the developer is required to duplicate a large amount of code and must devote time and effort to developing individual portions of code specific to each registry.
When manipulating a registry containing configuration information, a developer must be cautious to ensure that any changes to the registry do not cause problems for the availability of the computer system or any active processes. Changes to a registry can render a system unstable or unusable under some circumstances. Developers may also be concerned that other active processes that rely upon the registry being manipulated receive adequate notice of any changes. This is particularly difficult if the configuration information is common across multiple systems, such as in a cluster network. Additionally, developers may need to ensure that any manipulation of sensitive configuration information has been performed correctly before the manipulated configuration information is used by other processes or systems.